package com.buba.service;

import com.baomidou.mybatisplus.extension.service.IService;
import entity.salary.Accumulation;
import entity.salary.dto.accumulationDto;
import entity.salary.dto.socialDto;
import entity.salary.vo.socialDetailedVo;
import entity.staff.dto.saveAccountDto;
import entity.staff.dto.withAccumPerDto;
import utils.PageResult;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author beisheng
 * @since 2023-03-14
 */
public interface AccumulationService extends IService<Accumulation> {

    /* *
     * @Author: beisheng
     * @Descriprion: 添加公积金方案,并添加公积金方案配置信息，添加关联人员
     * @Date: 2023/3/16 18:31
     * @Return: common.R
     * @Param: [insuranceDto]
     */

    void insertaccumulation(accumulationDto accumulationDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 分页查询公积金方案
     * @Date: 2023/3/15 19:00
     * @Return: common.R
     * @Param: []
     */

    PageResult findAllAccumulation(socialDto socialDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据公积金方案ID查询当前社保方案关联的人员信息
     * @Date: 2023/3/16 10:47
     * @Return: common.R
     * @Param: [socialPerDto]
     */

    PageResult withAccumPerDto(withAccumPerDto accumPerDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据公积金方案名称查看公积金方案中是否包含当前公积金方案
     * @Date: 2023/3/19 18:36
     * @Return: common.R
     * @Param: [schemeName]
     */

    Boolean judgeSchemeAcc(String schemeName);

    /* *
     * @Author: beisheng
     * @Descriprion: 添加人员到公积金方案
     * @Date: 2023/3/17 9:52
     * @Return: common.R
     * @Param: [saveAccountDto]
     */

    void saveAccuntToAccum(saveAccountDto saveAccountDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 批量逻辑删除公积金方案并逻辑删除关联配置方案信息
     * @Date: 2023/3/19 19:01
     * @Return: common.R
     * @Param: [ids]
     */

    void removeAccumByIds(List<Integer> ids);

    /* *
     * @Author: beisheng
     * @Descriprion: 删除公积金方案,并删除关联方案配置信息
     * @Date: 2023/3/17 10:26
     * @Return: common.R
     * @Param: [id]
     */

    void removeAccum(Integer id);

    /* *
     * @Author: beisheng
     * @Descriprion: 更改公积金方案状态
     * @Date: 2023/3/17 10:43
     * @Return: common.R
     * @Param: [id]
     */

    void updateAccumStatus(Map<String, Object> map);

    /* *
     * @Author: beisheng
     * @Descriprion: 修改公积金方案及公积金方案配置信息及关联人员
     * @Date: 2023/3/17 11:21
     * @Return: common.R
     * @Param: [insuranceDto]
     */

    void updateAccum(accumulationDto accumulationDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据选择的公积金方案查询缴费明细
     * @Date: 2023/3/20 19:55
     * @Return: common.R
     * @Param: [socilaId]
     */

    List<socialDetailedVo> accumDetailed(Integer accumId);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据公积金ID查询关联人员和关联险种信息
     * @Date: 2023/4/6 10:47
     * @Return: common.R
     * @Param: [socialId]
     */

    accumulationDto selAccumAndPeopleAndSocialFile(Integer socialId);
}
